package com.hs.singleton;

/**
 * @Author: hs
 * @Description: 不仅能避免多线程同步问题，而且还能防止反序列化重新创建新的对象
 * (枚举值反序列化，的原理跟其他类不一样，没有回调readResolve方法)
 * enum序列化的时候就指定了name，反序列化，也是根据name来获取。所以天然反序列化
 * 同时也是天然放反射 Cannot reflectively create enum objects
 * 貌似也是懒加载？---饿汉模式，就是加载这个类的时候 立马创建  有点疑惑，加载并不一定初始化？
 * https://blog.csdn.net/iceman1952/article/details/1523025
 * @Date: Create i
 * n 19:02 2019/7/28
 */
public enum SingletonEnum {
    INSTANCE0,
    INSTANCE,
    INSTANCE2;

    static {
        System.out.println("枚举类加载。。");
    }

    public void whateverMethod() {
        System.out.println("枚举实例打印"+this.toString());
    }

    /*protected Object readResolve() throws ObjectStreamException {
        System.out.println("调用了readResolve方法！");
        return INSTANCE;
    }*/
}
